home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 131 / 131.d81 / menubox source < prev    next >
Text File  |  2022-08-26  |  21KB  |  1,957 lines

  1.  
  2. open =$ffc0
  3. readst =$ffb7
  4. setlfs =$ffba
  5. setnam =$ffbd
  6. load =$ffd5
  7. getin =$ffe4
  8. clrchn =$ffcc
  9. close =$ffc3   ;a
  10. chrin =$ffcf
  11. chkout =$ffc9  ;x
  12. chkin =$ffc6   ;x
  13. plot =$fff0
  14. chrout =$ffd2
  15. color'pointer =243
  16. screen'line'pointer =209
  17. print'number =$bdcd ;x,a
  18. clear'line =59903
  19. background =53281
  20. border =53280
  21. unlisten =$ffae
  22. clall =$ffe7
  23. home =19
  24. buffer =$200
  25.  
  26. crsr'down =17
  27. crsr'right =29
  28. crsr'up =145
  29. insert =148
  30. crsr'left =157
  31. temp =247
  32. index =249
  33. offset =167
  34. item =169
  35. .org $9000
  36. ;mem
  37. .obj "@0:menubox 9000"
  38.  
  39. jmp pattern1
  40. jmp box'entry;3
  41. jmp frame'entry;6
  42. jmp copy'tile;9
  43. jmp get'address;12
  44. jmp ml'pattern1;15
  45. jmp ml'box'entry;18
  46. jmp ml'frame;21
  47. jmp ml'copy'tile;24
  48. jmp get'file;27
  49. jmp scroll'up;30
  50. jmp scroll'down;33
  51. jmp clear'row;36
  52. jmp set'location;39
  53. jmp fill'array ;42   string,index,on/off
  54. jmp index'array;45
  55. jmp rack'it'up;48
  56. jmp find'clear;51
  57. jmp bload'dir;54
  58. jmp regular'menu;57
  59. jmp dir'menu;60
  60. jmp set'dir'mode;63
  61. jmp getword;66
  62.  
  63. get'address ldx <more'tiles
  64. ldy >more'tiles
  65. stx 781
  66. sty 782
  67. rts
  68.  
  69. ml'pattern1 stx $14
  70. sty $15
  71.  
  72. ldy #7
  73. - lda ($14),y
  74. sta parms,y
  75. dey
  76. bpl -
  77. jmp pt1
  78.  
  79. ml'box'entry stx $14
  80. sty $15
  81.  
  82. ldy #5
  83. - lda ($14),y
  84. sta parms,y
  85. dey
  86. bpl -
  87. jmp fill'box
  88.  
  89. ml'frame stx $14
  90. sty $15
  91.  
  92. ldy #4
  93. - lda ($14),y
  94. sta parms,y
  95. dey
  96. bpl -
  97. jmp frame'up
  98.  
  99. ml'copy'tile stx $14
  100. sty $15
  101.  
  102. ldy #5
  103. lda #0
  104. - sta parms,y
  105. dey
  106. bpl -
  107. ldy #0
  108. lda ($14),y
  109. sta parms+4
  110. iny
  111. lda ($14),y
  112. sta parms+5
  113. iny
  114. lda ($14),y
  115. sta parms
  116. iny
  117. lda ($14),y
  118. sta parms+2
  119. jmp tile'math
  120.  
  121. pattern1 lda #0;x1,x2,y1,y2,t1,t2,c1,c2
  122. ;                +0 +1 +2 +3 +4 +5 +6 +7
  123. sta 212
  124. sta toggle
  125. jsr linx
  126. - jsr get'number
  127. ldx toggle
  128. tya
  129. sta parms,x
  130. inc toggle
  131. lda toggle
  132. cmp #8
  133. bcc -
  134.  
  135. pt1 lda parms+2
  136. sta 214
  137. jsr 58732
  138. jsr old'rom'patch
  139. - lda 214
  140. and #1
  141. sta toggle
  142.  
  143. ldy parms
  144. - ldx toggle
  145. lda parms+4,x
  146. sta (209),y
  147. lda parms+6,x
  148. sta (243),y
  149. inc toggle
  150. lda toggle
  151. and #1
  152. sta toggle
  153. iny
  154. cpy parms+1
  155. bcc -
  156. beq -
  157.  
  158. jsr line'math
  159. lda 214
  160. cmp parms+3
  161. bcc --
  162. beq --
  163. lda #19
  164. jmp chrout
  165.  
  166. get'number jsr $aefd
  167. jsr $ad8a
  168. jmp $b7f7
  169.  
  170. linx ldy #24
  171. - lda 217,y
  172. ora #128
  173. sta 217,y
  174. dey
  175. bpl -
  176. rts
  177.  
  178. box'entry lda #0
  179. sta temp
  180. - jsr get'number
  181. tya
  182. ldx temp
  183. sta parms,x
  184. inc temp
  185. cpx #5
  186. bne -
  187.  
  188. fill'box jsr linx
  189. lda 214
  190. pha
  191. lda 211
  192. pha
  193. box'start ldx parms+2
  194. ldy #0
  195. clc
  196. jsr $fff0
  197. jsr old'rom'patch
  198. dec parms
  199.  
  200. - ldy parms+1
  201. - lda parms+4
  202. cmp #255
  203. beq +
  204. sta (209),y
  205. + lda parms+5
  206. sta (243),y
  207. dey
  208. cpy parms
  209. bne -
  210. lda 214
  211. cmp parms+3
  212. beq +
  213.  
  214. jsr line'math
  215. jmp --
  216. + lda #home
  217. jsr $ffd2
  218. pla
  219. sta 211
  220. pla
  221. sta 214
  222. jmp 58732
  223.  
  224. frame'up jsr linx
  225. lda 214
  226. pha
  227. lda 211
  228. pha
  229. frame'start ldx box'parameters+2
  230. ldy #0
  231. clc
  232. jsr plot  
  233. jsr old'rom'patch
  234. ;dec box'parameters
  235.  
  236. ldy box'parameters+1
  237. lda box'parameters+4
  238. pha
  239. and #128
  240. ora #110
  241. sta (209),y
  242. pla 
  243. sta (243),y
  244. dey
  245.  
  246. - lda box'parameters+4
  247. pha
  248. and #128
  249. ora #64
  250. sta (209),y
  251. pla
  252. sta (243),y
  253. dey
  254. cpy box'parameters
  255. bne -
  256.  
  257. lda box'parameters+4
  258. pha
  259. and #128
  260. ora #112
  261. sta (209),y
  262. pla 
  263. sta (243),y
  264.  
  265. - jsr line'math
  266.  
  267. lda 214
  268. cmp box'parameters+3
  269. bcs do'bottom
  270.  
  271. lda box'parameters+4
  272. pha
  273. and #128
  274. ora #93
  275. ldy box'parameters
  276. sta (209),y
  277. ldy box'parameters+1
  278. sta (209),y
  279. pla
  280. sta (243),y
  281. ldy box'parameters
  282. sta (243),y
  283. jmp -
  284.  
  285. do'bottom ldy box'parameters+1
  286. lda box'parameters+4
  287. pha
  288. and #128
  289. ora #125
  290. sta (209),y
  291. pla 
  292. sta (243),y
  293. dey
  294.  
  295. - lda box'parameters+4
  296. pha
  297. and #128
  298. ora #64
  299. sta (209),y
  300. pla
  301. sta (243),y
  302. dey
  303. cpy box'parameters
  304. bne -
  305.  
  306. lda box'parameters+4
  307. pha
  308. and #128
  309. ora #109
  310. sta (209),y
  311. pla 
  312. sta (243),y
  313.  
  314. pla
  315. sta 211
  316. pla
  317. sta 214
  318. jsr 58732
  319. jmp linx
  320.  
  321. line'math inc 214
  322. lda #40
  323. clc
  324. adc 209
  325. sta 209
  326. lda #0
  327. adc 210
  328. sta 210
  329. lda #40
  330. clc
  331. adc 243
  332. sta 243
  333. lda #0
  334. adc 244
  335. sta 244
  336. rts
  337.  
  338. frame'entry jsr get'number
  339. sty parms
  340. jsr get'number
  341. sty parms+1
  342. jsr get'number
  343. sty parms+2
  344. jsr get'number
  345. sty parms+3
  346. jsr get'number
  347. sty parms+4
  348. ldx <parms
  349. ldy >parms
  350. jmp frame'up
  351.  
  352. copy'tile jsr get'number
  353. sty parms+4
  354. sta parms+5
  355. jsr get'number
  356. sty parms
  357. jsr get'number
  358. sty parms+2
  359. lda #0
  360. sta parms+1
  361. sta parms+3
  362.  
  363. tile'math ldy #2
  364. - asl parms
  365. rol parms+1
  366. dey
  367. bpl -
  368. ldy #2
  369. - asl parms+2
  370. rol parms+3
  371. dey
  372. bpl -
  373.  
  374. lda parms+4
  375. clc
  376. adc parms+2
  377. sta stash'it+1
  378. lda parms+5
  379. adc parms+3
  380. sta stash'it+2
  381.  
  382. lda parms
  383. clc
  384. adc <tiles
  385. sta copy'pattern+1
  386. lda parms+1
  387. adc >tiles
  388. sta copy'pattern+2
  389. jsr rom'out
  390.  
  391. ldy #7
  392. copy'pattern lda pattern,y
  393. stash'it sta $c000,y
  394. dey
  395. bpl copy'pattern
  396. jmp rom'in
  397.  
  398.  
  399. ;***** get string from BASIC ****
  400.  
  401. get'string jsr $aefd
  402. jsr $ad9e
  403. jsr $b6a3
  404. ldx $22
  405. ldy $23
  406. rts
  407.  
  408. locvar lda $7a
  409. pha
  410. lda $7b
  411. pha
  412. stx $7a
  413. sty $7b
  414. jsr $b08b
  415. sta $49
  416. sty $4a
  417. pla
  418. sta $7b
  419. pla
  420. sta $7a
  421. rts
  422.  
  423. set'string sta $64
  424. sty $65
  425. jmp $aa52
  426.  
  427. clear'buffer ldy #79
  428. lda #0
  429. - sta buffer,y
  430. dey
  431. bpl -
  432. rts
  433.  
  434. get'dimensions jsr get'number
  435. sty startingx
  436. jsr get'number
  437. sty endingx
  438. jsr get'number
  439. sty startingy
  440. jsr get'number
  441. sty endingy
  442. rts
  443.  
  444. scroll'up jsr get'dimensions
  445. ml'scroll'up ldy startingx
  446. ldx startingy
  447. stx line
  448. clc
  449. jsr plot
  450. jsr old'rom'patch
  451.  
  452. scroll'up'math clc
  453. lda 209
  454. adc <40
  455. sta 251
  456. lda 210
  457. adc >40
  458. sta 252
  459.  
  460. clc
  461. lda 243
  462. adc <40
  463. sta 253
  464. lda 244
  465. adc >40
  466. sta 254
  467.  
  468. ldy startingx
  469.  
  470. - lda (251),y
  471. sta (209),y
  472. lda (253),y
  473. sta (243),y
  474. iny
  475. cpy endingx
  476. beq -
  477. bcc -
  478.  
  479. inc line
  480. lda line
  481. cmp endingy
  482. bcs through'scrolling'up
  483.  
  484. clc
  485. lda 209
  486. adc <40
  487. sta 209
  488. lda 210
  489. adc >40
  490. sta 210
  491.  
  492. clc
  493. lda 243
  494. adc <40
  495. sta 243
  496. lda 244
  497. adc >40
  498. sta 244
  499. jmp scroll'up'math
  500.  
  501. through'scrolling'up ldx endingy
  502. ldy startingx
  503. clc
  504. jmp plot
  505. jsr old'rom'patch
  506.  
  507. scroll'down jsr get'dimensions
  508. ml'scroll'down ldy startingx
  509. ldx endingy
  510. stx line
  511. clc
  512. jsr plot
  513. jsr old'rom'patch
  514.  
  515. scroll'down'math sec
  516. lda 209
  517. sbc <40
  518. sta 251
  519. lda 210
  520. sbc >40
  521. sta 252
  522.  
  523. sec
  524. lda 243
  525. sbc <40
  526. sta 253
  527. lda 244
  528. sbc >40
  529. sta 254
  530.  
  531. ldy startingx
  532.  
  533. - lda (251),y
  534. sta (209),y
  535. lda (253),y
  536. sta (243),y
  537. iny
  538. cpy endingx
  539. beq -
  540. bcc -
  541.  
  542. dec line
  543. lda line
  544. cmp startingy
  545. beq through'scrolling'down
  546.  
  547. sec
  548. lda 209
  549. sbc <40
  550. sta 209
  551. lda 210
  552. sbc >40
  553. sta 210
  554.  
  555. sec
  556. lda 243
  557. sbc <40
  558. sta 243
  559. lda 244
  560. sbc >40
  561. sta 244
  562. jmp scroll'down'math
  563.  
  564. through'scrolling'down ldx startingy
  565. ldy startingx
  566. clc
  567. jsr plot
  568. jmp old'rom'patch
  569.  
  570. clear'row jsr get'number
  571. sta char
  572. jsr get'number
  573. sta color
  574.  
  575. ml'clear ldy startingx
  576. - lda char
  577. sta (209),y
  578. lda color
  579. sta (243),y
  580. iny
  581. cpy endingx
  582. beq -
  583. bcc -
  584. rts
  585.  
  586. old'rom'patch lda 210
  587. sec
  588. sbc 648
  589. clc
  590. adc #$d8
  591. sta 244
  592. lda 209
  593. sta 243
  594. rts
  595.  
  596. fill'array jsr get'string
  597. stx location
  598. sty location+1
  599. sta length
  600. jsr get'number
  601. sty index
  602. sta index+1
  603. jsr get'number
  604. sty selected
  605.  
  606. write'table jsr index'math
  607.  
  608. jsr rom'out
  609. ldy #3
  610. - lda location,y
  611. sta (251),y
  612. dey
  613. bpl -
  614.  
  615. jmp rom'in
  616.  
  617. index'array lda #0
  618. sta offset
  619. sta offset+1
  620. sta item
  621. jsr get'number
  622. sty index
  623. sta index+1
  624. lda dir'mode
  625. beq read'table
  626. lda index
  627. sta offset
  628. lda index+1
  629. sta offset+1
  630. lda #0
  631. sta index
  632. sta index+1
  633. jmp make'filename
  634.  
  635. read'table jsr index'math
  636.  
  637. jsr rom'out
  638. ldy #3
  639. - lda (251),y
  640. sta location,y
  641. dey
  642. bpl -
  643.  
  644. jsr rom'in
  645.  
  646. lda selected
  647. sta 253
  648. lda #0
  649. sta 254
  650. jmp make'variable
  651.  
  652. index'math lda index
  653. sta 253
  654. lda index+1
  655. sta 254
  656.  
  657. asl 253
  658. rol 254
  659. asl 253
  660. rol 254
  661.  
  662. clc 
  663. lda array'storage
  664. adc 253
  665. sta 251
  666. lda array'storage+1
  667. adc 254
  668. sta 252
  669. rts
  670.  
  671. rom'out pha
  672. lda #$74
  673. sei
  674. sta 1
  675. pla
  676. rts
  677.  
  678. rom'in pha
  679. lda #$77
  680. sta 1
  681. pla
  682. cli
  683. rts
  684.  
  685.  
  686. ;store lsb in 253
  687. ;store msb in 254
  688. ;makes varible, f%
  689.  
  690. make'variable lda "f"
  691. sta 251
  692. lda "%"
  693. sta 252
  694.  
  695. lda $7a
  696. pha
  697. lda $7b
  698. pha
  699.  
  700. lda <251
  701. sta $7a
  702. lda >251
  703. sta $7b
  704. jsr $b08b
  705. ldy #0
  706. lda 254 ;high byte
  707. sta ($47),y
  708. iny
  709. lda 253 ;low byte
  710. sta ($47),y
  711. pla
  712. sta $7b
  713. pla
  714. sta $7a
  715. rts
  716.  
  717. find'clear rts
  718.  
  719. load'index lda parms
  720. sta index
  721. lda parms+1
  722. sta index+1
  723. rts
  724.  
  725. bload'dir jsr get'string
  726. jsr setnam
  727. jsr get'number
  728. sty device
  729. tya
  730. tax
  731. lda #1
  732. ldy #0
  733. jsr setlfs
  734. jsr get'number
  735. ldx $14
  736. ldy $15
  737. stx dir'location
  738. stx 174
  739. sty dir'location+1
  740. sty 175
  741. lda #0
  742. jsr open
  743. jsr clrchn
  744. ldx #1
  745. jsr chkin
  746. jsr getin
  747. jsr getin
  748.  
  749. ldy #0
  750. - jsr getin
  751. jsr rom'out
  752. sta (174),y
  753. jsr rom'in
  754. inc 174
  755. bne +
  756. inc 175
  757. + jsr readst
  758. and #66
  759. beq -
  760. lda #1
  761. jsr close
  762. jsr clrchn
  763.  
  764. lda 174
  765. sec
  766. sbc dir'location
  767. sta files
  768. lda 175
  769. sbc dir'location+1
  770. sta files+1
  771.  
  772. ldy #4
  773. - lsr files+1
  774. ror files
  775. dey
  776. bpl -
  777.  
  778. lda files
  779. sec
  780. sbc #2
  781. sta files
  782. sta 253
  783. lda files+1
  784. sbc #0
  785. sta files+1
  786. sta 254
  787. jsr make'variable
  788. lda dir'location
  789. clc
  790. adc #32
  791. sta dir'location
  792. lda dir'location+1
  793. adc #0
  794. sta dir'location+1
  795. rts
  796.  
  797. set'location jsr get'number
  798. mlset sty array'storage
  799. sta array'storage+1
  800. rts
  801.  
  802. ;sys rm,x1,x2,y1,y2,rvs,text,highlight,
  803. ;selected,offset,limit,multimode
  804. regular'menu lda #0
  805. sta dir'mode
  806. jsr get'number
  807. sty menux1
  808. sty error'string
  809. sty startingx
  810. jsr get'number
  811. sty